﻿using Microsoft.Win32;
using System;
using System.Threading.Tasks;
using System.Data;
using System.IO;
using System.Windows;
using PSSMS.Tools.Utils;

namespace PSSMS.View.SysManage
{
    /// <summary>
    /// DR_ClientSM_kh.xaml 的交互逻辑
    /// </summary>
    public partial class DR_ClientSM_kh : Window
    {
        BLL.Clientsm.ClientsmClient myClient = new BLL.Clientsm.ClientsmClient();
        public DR_ClientSM_kh()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 禁用保存按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            //禁用保存按钮
            btnSave.IsEnabled = false;
            btnSave.Opacity = 0.5;
        }
        /// <summary>
        /// 下载模板
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnDownload_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                //(1)判读文件是否存在
                string strPath = System.Windows.Forms.Application.StartupPath.Substring(0, System.Windows.Forms.Application.StartupPath.LastIndexOf(@"\"));
                // 返回指定路径字符串的目录信息(参数:文件或目录的路径。)。
                string path2 = Path.GetDirectoryName(strPath) + @"\Excel\客户信息Excel文件.xls";
                //(2)打开文件对话框
                System.Windows.Forms.FolderBrowserDialog fbd = new System.Windows.Forms.FolderBrowserDialog();
                fbd.ShowDialog();//打开窗口
                //选择文件存放位置
                if (fbd.SelectedPath != null)
                {
                    //将现有文件复制到新文件。 允许覆盖同名的文件。(参数：1、要复制的文件，2、目标文件的名称,不能是目录。3、如果可以覆盖目标文件，则为 true；否则为 false。)
                    File.Copy(path2, fbd.SelectedPath + "\\客户信息Excel文件.xls", true);
                    MessageBox.Show("下载完毕!", "系统提示", MessageBoxButton.OK, MessageBoxImage.Information);
                }
            }
            catch (Exception)
            {
                MessageBox.Show("文件不存在!", "系统提示", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
        /// <summary>
        /// 导入Excel数据显示DataGrid
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnImport_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                //（1）、选中文件
                OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.Title = "选择数据源文件";//标题
                openFileDialog.Filter = "Excel文件 | *.xls | 所有文件 | *.* ";//文件类型
                openFileDialog.FileName = string.Empty;//文件完整路径
                openFileDialog.FilterIndex = 1;//文件索引
                openFileDialog.Multiselect = false;//不允许用户选择多个文件
                openFileDialog.RestoreDirectory = true;//不实现此属性。
                openFileDialog.DefaultExt = "xls";//指定用来筛选显示的文件列表的默认扩展名字符串。
                if (openFileDialog.ShowDialog() == false)
                {
                    return;
                }
                //文件对话框中选定的文件的完整路径
                string pPath = openFileDialog.FileName;
                //（2）、通过路径获取到的数据(调用封装公共方法)
                DataTable dt = ImportToExcel.ChangeExcelToDateTable(pPath);
                if (dt.Rows.Count > 0)
                {
                    //（3）绑定表格数据
                    DgrdAccountManage.ItemsSource = dt.DefaultView;
                    MessageBox.Show("导入成功!", "系统提示", MessageBoxButton.OK, MessageBoxImage.Information);
                    //启用按钮
                    btnSave.IsEnabled = true;
                    btnSave.Opacity = 0.7;
                }
                else
                {
                    MessageBox.Show("表格无数据!", "系统提示", MessageBoxButton.OK, MessageBoxImage.Stop);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "系统提示", MessageBoxButton.OK, MessageBoxImage.Stop);
            }
        }
        /// <summary>
        /// 保存数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                //获取数据
                if (DgrdAccountManage.Items.Count > 0)
                {
                    DataTable dt = (DgrdAccountManage.ItemsSource as DataView).ToTable();
                    //初始化变量：分别记录：保存成功条数、不准确（不存在用户或者权限）条数、存在(重复)条数、失败条数。
                    int intSuccess = 0, intNull = 0, intRepeat = 0, intFailure = 0;

                    //（1）DataTable获取DataGrid表格数据；
                    DataTable dtSaveData = new DataTable();
                    //（2）添加列
                    dtSaveData.Columns.Add("customerTypeID", typeof(int));
                    dtSaveData.Columns.Add("disID", typeof(int));
                    dtSaveData.Columns.Add("employeeID", typeof(int));
                    dtSaveData.Columns.Add("customerName", typeof(string));
                    dtSaveData.Columns.Add("contactPerson", typeof(string));
                    dtSaveData.Columns.Add("contactNumber", typeof(string));
                    dtSaveData.Columns.Add("contactAddress", typeof(string));
                    dtSaveData.Columns.Add("remark", typeof(string));
                    dtSaveData.Columns.Add("defaultNo", typeof(bool));
                    dtSaveData.Columns.Add("disabledNo", typeof(bool));
                    //（2）创建临时表DataTable获取准确的数据：判断数据准确性：是否准确(判断员工，判断权限)是否存在,判断数据是否重复。
                    //#region 数据验证
                    //for (int i = 0; i < dt.Rows.Count; i++)
                    //{
                    //    string strStaffName = dt.Rows[i]["姓名"].ToString().Trim();
                    //    //①、数据库查询数据:根据“姓名”获取staffID
                    //    DataTable dtStaffID = myClient.SelectStaffIDByStaffName(strStaffName).Tables[0];
                    //    //②、根据“权限组”获取 p_group_id     
                    //    string strPGroup = dt.Rows[i]["权限组"].ToString().Trim();
                    //    DataTable dtPGroup = myClient.SelectPermissionIDByGroupName(strPGroup).Tables[0];
                    //    //判断“姓名”和“权限组”都没有问题
                    //    if (dtStaffID.Rows.Count > 0 && dtPGroup.Rows.Count > 0)
                    //    {
                    //        int intStaffID = Convert.ToInt32(dtStaffID.Rows[0][0]);
                    //        int intPGroupID = Convert.ToInt32(dtPGroup.Rows[0][0]);
                    //        //把中文表格dt给到dtSaveData
                    //        //添加数据行
                    //        DataRow dr = dtSaveData.NewRow();
                    //        dr["staffID"] = intStaffID;
                    //        dr["permissionGroupID"] = intPGroupID;
                    //        dr["operatorAccounts"] = dt.Rows[i]["员工账号"].ToString().Trim();
                    //        dr["operatorPassword"] = dt.Rows[i]["密码"].ToString().Trim();
                    //        dr["note"] = dt.Rows[i]["备注"].ToString().Trim();
                    //        dtSaveData.Rows.Add(dr);//添加数据给表格
                    //    }
                    //    else
                    //    {
                    //        //找不到用户和权限组。
                    //        intNull = intNull + 1;
                    //    }
                    //}
                    //#endregion

                    //（3）保存数据：批量保存数据（循环临时表）。
                    #region 保存数据
                    for (int i = 0; i < dtSaveData.Rows.Count; i++)
                    {
                        int intDisID = Convert.ToInt32(dtSaveData.Rows[i]["disID"]);//所属地区
                        int intCustomerTypeID = Convert.ToInt32(dtSaveData.Rows[i]["customerTypeID"]);
                        int intEmployeeID = Convert.ToInt32(dtSaveData.Rows[i]["employeeID"]);
                        string strCustomerName = dtSaveData.Rows[i]["customerName"].ToString().Trim();
                        string strContactPerson = dtSaveData.Rows[i]["contactPerson"].ToString().Trim();
                        string strContactNumber = dtSaveData.Rows[i]["contactNumber"].ToString().Trim();
                        decimal decInitialPayable = Convert.ToDecimal(dtSaveData.Rows[i]["initialPayable"]);
                        bool blDefaultNo = true;
                        bool blDisabledNo = true;
                        string strContactAddress = dtSaveData.Rows[i]["contactAddress"].ToString().Trim();
                        string strRemark = dtSaveData.Rows[i]["remark"].ToString().Trim();
                        //执行新增方法
                        int intCount = myClient.InsertManage(intCustomerTypeID, strCustomerName,
         strContactPerson, strContactNumber, intDisID, strContactAddress,
         intEmployeeID, strRemark, blDefaultNo, blDisabledNo);
                        if (intCount == -1)
                        {
                            //重复条数
                            intRepeat = intRepeat + 1;
                        }
                        else if (intCount > 0)
                        {
                            //成功条数
                            intSuccess = intSuccess + 1;
                        }
                        else
                        {
                            //失败条数
                            intSuccess = intSuccess + 1;
                        }
                    }
                    //弹出确定对话框
                    if (MessageBox.Show("(1)导入成功" + intSuccess + "条数;\n(2)已存在" + intRepeat +
                        "条数；\n(3)不存在用户或者权限" + intNull + "条数；\n(4)失败" + intFailure + "条数", "提示",
                        MessageBoxButton.OKCancel, MessageBoxImage.Asterisk) == MessageBoxResult.OK)//如果点了确定按钮
                    {
                        this.Close();
                    }
                    #endregion
                }
                else
                {
                    MessageBox.Show("表格无数据!", "系统提示", MessageBoxButton.OK, MessageBoxImage.Stop);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                MessageBox.Show("没有满足条件的数据，请重新填写数据。", "提示", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
    }
}
